package fa7.socialcode.service.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import fa7.socialcode.dao.AvaliacaoDao;
import fa7.socialcode.dao.CategoriaDao;
import fa7.socialcode.dao.ConteudoDao;
import fa7.socialcode.dao.UsuarioDao;
import fa7.socialcode.model.Avaliacao;
import fa7.socialcode.model.Categoria;
import fa7.socialcode.model.Conteudo;
import fa7.socialcode.model.Usuario;
import fa7.socialcode.service.AvaliacaoManager;

@Service(value="avaliacaoManager")
public class AvaliacaoManagerImpl implements AvaliacaoManager {
	
	@Autowired
	private AvaliacaoDao avaliacaoDao;
	@Autowired
	private ConteudoDao conteudoDao;
	@Autowired
	private UsuarioDao usuarioDao;
	
	public void setAvaliacaoDao(AvaliacaoDao dao) {
        this.avaliacaoDao = dao;
    }

    public List findAvaliacoes() {
        return avaliacaoDao.findAvaliacoes();
    }

    public Avaliacao findAvaliacao(String avaliacaoId) {
        return avaliacaoDao.findAvaliacao(Long.valueOf(avaliacaoId));
    }
    @Override
    public Conteudo findConteudo(String conteudoId) {
      return conteudoDao.findConteudo(Long.valueOf(conteudoId));
  }

    public void saveAvaliacao(Avaliacao avaliacao, Long conteudoId, Long usuarioId) {
    	avaliacao.setDataPostagem(new Date());
    	Usuario usu = usuarioDao.findUsuario(usuarioId); 
    	Conteudo con = conteudoDao.findConteudo(conteudoId);
		avaliacao.setConteudo(con);
		avaliacao.setUsuario(usu);
        avaliacaoDao.saveAvaliacao(avaliacao);
    }

    public void removeAvaliacao(String avaliacaoId) {
        avaliacaoDao.removeAvaliacao(Long.valueOf(avaliacaoId));
    }
    
	public void setConteudoDao(ConteudoDao conteudoDao) {
		this.conteudoDao = conteudoDao;
	}
	
	public void setUsuarioDao (UsuarioDao usuarioDao){
		this.usuarioDao = usuarioDao;
	}

	public List findConteudos() {
		// TODO Auto-generated method stub
		return conteudoDao.findConteudos();
	}
	
	public List findUsuarios(){
		return usuarioDao.findUsuarios();
	}


	
}
